1. Field of the Invention
The present invention relates to an object collaboration apparatus for performing collaboration processing such as interaction and cooperation among a group of computers or objects. More particularly, the present invention relates to an object collaboration apparatus for providing a system on a computer network that can adjust to environmental changes and progressive system changes flexibly by generating and organizing a plurality of processes dynamically in an object-oriented environment.
2. Description of the Related Art
As the computer networks shave become widespread in recent years, the systems in which a plurality of objects, which are distributed on a computer network, perform a process while collaborating with each other have been increasing. Research for techniques for object collaboration systems focuses mainly on the object oriented programming technologies and software component technology. One example of an object oriented programming technology is CORBA (Common Object Request Broker: Architecture and Specification), which is a common specification for operating distributed objects, issued by the OMG (Object Management Group), which has been established in order to standardize and promote object-oriented technology.
FIG. 23 shows an example of an object collaboration in a client/server system based on CORBA. In this system, a series of processing is conducted by collaboration of a client application and a server application, namely by an object collaboration.
Application developers describe the service interface provided by a client and a server with IDL (Interface Definition Language). The interface is defined by a group of operations that can be requested from an object. For each operation, the name of the operation, parameters, return value, exceptional processing in case of an error, and additional information are defined.
Compiling the content defined with IDL by a specialized compiler forms a stub for a client and a skeleton for a server. The stub is a group of routines that provide a client application with access to a group of operations defined with IDL. In the client application, calling the routine provided by the stub activates the operation. The skeleton provides a dispatching routine to a method routine provided by a server application.
The stub and the skeleton are generated in a programming language which is used by the corresponding client application or server application. For example, if C is used as the programming language, the stub is formed as a group of functions in C. The client application calls the function corresponding to the desired operation, thereby calling the routine corresponding to the server application via the stub, ORB run time and the skeleton. After executing the predetermined processing, the processed result is returned to the client application which originated the call.
Thus, constructing an object collaboration processing has become easier with CORBA. However, when actually trying to construct such an object collaboration processing with CORBA, it is necessary not only to understand the CORBA itself, but also to design the object according to the CORBA specification and define it with IDL. In other words, whoever constructs the system has to fully understand its application method.
It is also necessary to be fully aware of the relationship between the objects. In other words, it is necessary to make clear what kind of processing is conducted by each object, and which transmission parameters are required for the processing.
As the interface between objects has been standardized, the independence of objects has been improved. However the existence of a fixed relationship between these objects is still presupposed.
When thinking of human communication, vague interaction often happens in the real word. For example, when a person tries to solve a problem, he/she utilizes his/her own resources or asks other people for collaboration. In the case of utilizing one's own resources, problem solving is considered from various view points. Also, in the case of asking others for help, it is possible to ask either a specific person for help, or to broadly request collaboration from participants. In the case of broadly asking an unspecified person for collaboration, the reaction of the participants varies in many ways. Some who have a solution or the resources to handle it may present an answer and collaborate. Others may give advice by passing on their own experience and knowledge, even if that does not directly present a solution or provide handling resources. Still others might ignore the inquiry because of their total indifference. In other words, whether the participant reacts to a request or not depends on the participant. Furthermore, when the participant decides to react to the request, how the participant does depends on the participant.
In general, with respect to a request for a job between human beings, when a of plurality participants offer collaboration responding to the request, the initiator of the request selects the most appropriate participant, for example the person with the highest ability or the person most readily available, and assigns the request to that person.
When the human being is replaced with an object here, whether or not each object receives transmitted information or requests for processing, and what kind of processing is conducted in response to the received information will be different. That is to say, in the distributed processing of a task, collaboration with free relationship between objects can be assumed. When a plurality of objects react to the information, it is necessary to detect which objects among an unspecified majority of objects can provide the processing. Furthermore, as these objects dynamically change their own condition, it is necessary to judge which object is appropriate for requesting processing.
In conventional distributed processing methods with object collaboration, the relationships between objects are fixed. Therefore, it was difficult to construct an object collaboration system realizing distributed processing with free relationships between objects.
Thus, in distributed object system technology, for example, in CORBA or DCOM, the framework for providing an object access which is transparent to a network and the framework with regard to interfaces for distributed objects is constantly improving. However, these frameworks are not adequate to answer the question of how dynamically to construct the collaboration between objects.